/*
 * 内存管理测试头文件
 * 定义各种内存管理功能的测试接口
 */

#ifndef MM_TEST_H
#define MM_TEST_H

#include "../fs/types.h"

// 测试函数声明
void test_physical_memory(void);        // 测试物理内存分配器
void test_pagetable(void);              // 测试页表功能
void test_virtual_memory(void);         // 测试虚拟内存激活
void run_all_mm_tests(void);            // 运行所有内存管理测试

// 辅助测试函数
void test_kalloc_basic(void);           // 基本分配测试
void test_kalloc_stress(void);          // 压力测试
void test_page_mapping(void);           // 页面映射测试
void test_address_translation(void);    // 地址转换测试

// 测试统计
extern int tests_passed;
extern int tests_failed;

// 测试宏
#define ASSERT(condition, message) \
    do { \
        if (!(condition)) { \
            printf("ASSERT FAILED: %s at %s:%d\n", message, __FILE__, __LINE__); \
            tests_failed++; \
            return; \
        } else { \
            tests_passed++; \
        } \
    } while(0)

#define TEST_START(name) \
    printf("Starting test: %s\n", name)

#define TEST_END(name) \
    printf("Test completed: %s\n", name)

#endif // MM_TEST_H